package com.xique.park.service.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xique.common.core.text.Convert;
import com.xique.common.core.utils.DateUtils;
import com.xique.common.core.web.domain.PageResult;
import com.xique.park.bean.domain.client.ParkClientUser;
import com.xique.park.bean.request.client.ClientUserListRequest;
import com.xique.park.mapper.client.ParkClientUserMapper;
import com.xique.park.service.service.IParkClientUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 岗亭用户Service业务层处理
 *
 * @author caogq
 * @date 2021-07-20
 */
@Service
public class ParkClientUserServiceImpl implements IParkClientUserService {

    @Autowired
    private ParkClientUserMapper parkClientUserMapper;

    /**
     * 查询岗亭用户
     *
     * @param id 岗亭用户ID
     * @return 岗亭用户
     */
    @Override
    public ParkClientUser selectParkClientUserById(Long id) {
        return parkClientUserMapper.selectParkClientUserById(id);
    }

    /**
     * 查询岗亭用户列表
     *
     * @param parkClientUser 岗亭用户
     * @return 岗亭用户
     */
    @Override
    public List<ParkClientUser> selectParkClientUserList(ParkClientUser parkClientUser) {
        List<ParkClientUser> parkClientUsers = parkClientUserMapper.selectParkClientUserList(parkClientUser);
        if (parkClientUsers.isEmpty()) {
            return parkClientUsers;
        }
        parkClientUsers.forEach(user -> {
            user.setPassword(null);
        });
        return parkClientUsers;
    }

    /**
     * 新增岗亭用户
     *
     * @param parkClientUser 岗亭用户
     * @return 结果
     */
    @Override
    public int insertParkClientUser(ParkClientUser parkClientUser) {
        parkClientUser.setCreateTime(DateUtils.getNowDate());
        return parkClientUserMapper.insertParkClientUser(parkClientUser);
    }

    /**
     * 修改岗亭用户
     *
     * @param parkClientUser 岗亭用户
     * @return 结果
     */
    @Override
    public int updateParkClientUser(ParkClientUser parkClientUser) {
        parkClientUser.setUpdateTime(DateUtils.getNowDate());
        return parkClientUserMapper.updateParkClientUser(parkClientUser);
    }

    /**
     * 删除岗亭用户对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteParkClientUserByIds(String ids) {
        return parkClientUserMapper.deleteParkClientUserByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除岗亭用户信息
     *
     * @param id 岗亭用户ID
     * @return 结果
     */
    @Override
    public int deleteParkClientUserById(Long id) {
        return parkClientUserMapper.deleteParkClientUserById(id);
    }

    @Override
    public PageResult selectPageList(Integer pageNum, Integer pageSize, Long id, Long parkId) {
        Page<ParkClientUser> page = new Page<>();
        page.setCurrent(pageNum);
        page.setSize(pageSize);
        IPage<ParkClientUser> pageResult = parkClientUserMapper.selectPageList(page, id, parkId);
        List<ParkClientUser> parkClientUserList = pageResult.getRecords();
        long totalPages = pageResult.getPages();
        long totalSize = pageResult.getTotal();
        return PageResult.builder()
                .pageNum(pageNum)
                .pageSize(pageSize)
                .totalPages(totalPages)
                .totalSize(totalSize)
                .list(parkClientUserList)
                .build();
    }

    @Override
    public List<ParkClientUser> selectParkClientUserListV1(ClientUserListRequest request) {
        return parkClientUserMapper.selectParkClientUserListV1(request);
    }

    @Override
    public List<ParkClientUser> selectParkClientUserByLoginName(String loginName) {
        return parkClientUserMapper.selectParkClientUserByLoginName(loginName);
    }
}
